﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using Entidad;

namespace Persistencia
{
    public class ProductorDAL
    {
        public List<Productor> TraerTodos(int? intCondigo, string strNombre,string strApellido, double? dblDocumento)
        {
            SqlConnection cn = Conexion.Conectar();
            try
            {
                SqlCommand cmd = new SqlCommand("spProductorSel", cn);
                cmd.Parameters.Add(new SqlParameter("@Codigo", intCondigo));
                cmd.Parameters.Add(new SqlParameter("@Nombre", strNombre));
                cmd.Parameters.Add(new SqlParameter("@Apellido", strApellido));
                cmd.Parameters.Add(new SqlParameter("@Documento", dblDocumento));

                cmd.CommandType = CommandType.StoredProcedure;
                SqlDataAdapter da = new SqlDataAdapter(cmd);

                DataSet ds = new DataSet();
                da.Fill(ds, "Productor");

                /*Creo la lista*/
                TipoDocumento objTipo = new TipoDocumento();
                List<Productor> Lista = (from item in ds.Tables[0].AsEnumerable()
                                         select new Productor()
                                         {
                                             Codigo = item.Field<int>("Codigo"),
                                             Nombre = item.Field<string>("Nombre"),
                                             Apellido = item.Field<string>("Apellido"),
                                             Descripcion = item.Field<string>("Descripcion"),
                                             Documento = item.Field<int>("Documento"),
                                             CUIT = item.Field<string>("CUIT"),
                                             DomicilioCalle = item.Field<string>("DomicilioCalle"),
                                             DomicilioDepto = item.Field<string>("DomicilioDepto"),
                                             DomicilioNumero = item.Field<int>("DomicilioNumero"),
                                             DomicilioPiso = item.Field<string>("DomicilioPiso"),
                                             EstadoProductor = item.Field<int>("EstadoProductor_Codigo"),
                                             //localidad = item.Field<int>("Localidad_Codigo"),

                                         }).ToList();
                return Lista;

            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                cn.Close();
            }
        }

        public int Insertar(Productor objProductor)
        {
            SqlConnection cn = Conexion.Conectar();
            try
            {
                SqlCommand cmd = new SqlCommand("spProductorIns", cn);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add(new SqlParameter("@Nombre", objProductor.Nombre));
                cmd.Parameters.Add(new SqlParameter("@Apellido", objProductor.Apellido));
                cmd.Parameters.Add(new SqlParameter("@TipoDocumento_Codigo", objProductor.TipoDocumento));
                cmd.Parameters.Add(new SqlParameter("@Documento", objProductor.Documento));
                cmd.Parameters.Add(new SqlParameter("@RazonSocial ", objProductor.RazonSocial));
                cmd.Parameters.Add(new SqlParameter("@CUIT", objProductor.CUIT));
                cmd.Parameters.Add(new SqlParameter("@Descripcion", objProductor.Descripcion));
                cmd.Parameters.Add(new SqlParameter("@EstadoProductor_Codigo", objProductor.EstadoProductor));
                cmd.Parameters.Add(new SqlParameter("@Localidad_Codigo", objProductor.Localidad));
                cmd.Parameters.Add(new SqlParameter("@DomicilioCalle", objProductor.DomicilioCalle));
                cmd.Parameters.Add(new SqlParameter("@DomicilioNumero", objProductor.DomicilioNumero));
                cmd.Parameters.Add(new SqlParameter("@DomicilioPiso", objProductor.DomicilioPiso));
                cmd.Parameters.Add(new SqlParameter("@DomicilioDepto", objProductor.DomicilioDepto));
                
                return cmd.ExecuteNonQuery();
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                cn.Close();
            }
        }

        public int Modificar(Productor objProductor)
        {
            SqlConnection cn = Conexion.Conectar();
            try
            {
                SqlCommand cmd = new SqlCommand("spProductorUpd", cn);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add(new SqlParameter("@Codigo", objProductor.Codigo));
                cmd.Parameters.Add(new SqlParameter("@Nombre", objProductor.Nombre));
                cmd.Parameters.Add(new SqlParameter("@Apellido", objProductor.Apellido));
                cmd.Parameters.Add(new SqlParameter("@TipoDocumento_Codigo", objProductor.TipoDocumento));
                cmd.Parameters.Add(new SqlParameter("@Documento", objProductor.Documento));
                cmd.Parameters.Add(new SqlParameter("@RazonSocial ", objProductor.RazonSocial));
                cmd.Parameters.Add(new SqlParameter("@CUIT", objProductor.CUIT));
                cmd.Parameters.Add(new SqlParameter("@Descripcion", objProductor.Descripcion));
                cmd.Parameters.Add(new SqlParameter("@EstadoProductor_Codigo", objProductor.EstadoProductor));
                cmd.Parameters.Add(new SqlParameter("@Localidad_Codigo", objProductor.Localidad));
                cmd.Parameters.Add(new SqlParameter("@DomicilioCalle", objProductor.DomicilioCalle));
                cmd.Parameters.Add(new SqlParameter("@DomicilioNumero", objProductor.DomicilioNumero));
                cmd.Parameters.Add(new SqlParameter("@DomicilioPiso", objProductor.DomicilioPiso));
                cmd.Parameters.Add(new SqlParameter("@DomicilioDepto", objProductor.DomicilioDepto));

                return cmd.ExecuteNonQuery();
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                cn.Close();
            }
        }

        public int Eliminar(int intCodigo)
        {
            SqlConnection cn = Conexion.Conectar();
            try
            {
                SqlCommand cmd = new SqlCommand("spProductorDel", cn);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add(new SqlParameter("@Codigo", intCodigo));
                return cmd.ExecuteNonQuery();
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                cn.Close();
            }
        }
    }
}
